home *** CD-ROM | disk | FTP | other *** search
- # Default Doodad Set for Discombobulator
- # by Evan J. Rosky, 2005
- # GPL- http://www.gnu.org/copyleft/gpl.html
- #
- # $Id: defaultdoodads.py 5497 2005-10-11 19:05:56Z ianwill $
- # --------------------------------------------------------------------------
- # ***** BEGIN GPL LICENSE BLOCK *****
- #
- # Copyright (C) 2005: Evan J. Rosky
- #
- # This program is free software; you can redistribute it and/or
- # modify it under the terms of the GNU General Public License
- # as published by the Free Software Foundation; either version 2
- # of the License, or (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program; if not, write to the Free Software Foundation,
- # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- #
- # ***** END GPL LICENCE BLOCK *****
- # --------------------------------------------------------------------------
-
-
- #Run discombobulator.py, not this.
-
- import Blender
- from Blender import NMesh,Object,Material
- from Blender.NMesh import Vert,Face
- from Blender.Mathutils import *
-
- import BPyMathutils
- from BPyMathutils import genrand
- a = BPyMathutils.sgenrand(4859)
-
- #Create random numbers
- def randnum(low,high):
- num = genrand()
- num = num*(high-low)
- num = num+low
- return num
-
- face = Face()
- xmin = Vector([0,0,0])
- xmax = Vector([0,0,0])
- ymin = Vector([0,0,0])
- ymax = Vector([0,0,0])
- mxmin = Vector([0,0,0])
- mxmax = Vector([0,0,0])
- mymin = Vector([0,0,0])
- mymax = Vector([0,0,0])
- doodadCenter = Vector([0,0,0])
- orientation = 0
- center = Vector([0,0,0])
- tosel = 0
- seltopsonly = 0
- tempx = []
- doodadMesh = NMesh.GetRaw()
-
- global materialArray
- global reassignMats
- global thereAreMats
- global currmat
- global doodSideMat
- global doodTopMat
-
- #face is the face to add the doodad to.
- #sizeX and sizeY are values from 0.0 to 1.0 that represents a percentage the face that is covered by the doodad.
- #height is how tall the doodad is.
-
- def settings(seltops,matArr,reasMats,therMats,sidemat,topmat):
- global seltopsonly
- global materialArray
- global reassignMats
- global thereAreMats
- global currmat
- global doodSideMat
- global doodTopMat
- materialArray = matArr
- reassignMats = reasMats
- thereAreMats = therMats
- seltopsonly = seltops
- doodSideMat = sidemat
- doodTopMat = topmat
-
- def setCurrMat(curma):
- global currmat
- currmat = curma
-
- #Find center and orientation of doodad
- def findDoodadCenter(sizeX, sizeY):
- #globalizing junk
- global face
- global xmin
- global xmax
- global ymin
- global ymax
- global orientation
- global doodadCenter
- global center
- global tosel
- global mxmin
- global mxmax
- global mymin
- global mymax
- global tempx
- global seltopsonly
-
- #Find the center of the face
- center = Vector([0,0,0])
- for pt in face.v:
- center = center + pt.co
- center = divideVectorByInt(center,len(face.v))
-
- #Find Temp Location Range by looking at the sizes
- txmin = ((divideVectorByInt((face.v[0].co + face.v[3].co),2)) - center)*(1-sizeX) + center
- txmax = ((divideVectorByInt((face.v[1].co + face.v[2].co),2)) - center)*(1-sizeX) + center
- tymin = ((divideVectorByInt((face.v[0].co + face.v[1].co),2)) - center)*(1-sizeY) + center
- tymax = ((divideVectorByInt((face.v[2].co + face.v[3].co),2)) - center)*(1-sizeY) + center
-
- #Find Center of doodad
- amtx = randnum(0.0,1.0)
- amty = randnum(0.0,1.0)
- thepoint = (((((txmin - txmax)*amtx + txmax) - ((tymin - tymax)*amty + tymax))*.5 + ((tymin - tymax)*amty + tymax)) - center)*2 + center
- doodadCenter = Vector([thepoint[0],thepoint[1],thepoint[2]])
-
- #Find Main Range by looking at the sizes
- mxmin = divideVectorByInt((face.v[0].co + face.v[3].co),2)
- mxmax = divideVectorByInt((face.v[1].co + face.v[2].co),2)
- mymin = divideVectorByInt((face.v[0].co + face.v[1].co),2)
- mymax = divideVectorByInt((face.v[2].co + face.v[3].co),2)
-
- #Find x/y equivs for whole face
- ve1 = (txmin - txmax)*amtx + txmax
- ve1 = ve1 - mxmax
- nax = ve1.length
- ve1 = (mxmin - mxmax)
- nax = nax/ve1.length
-
- ve1 = (tymin - tymax)*amty + tymax
- ve1 = ve1 - mymax
- nay = ve1.length
- ve1 = (mymin - mymax)
- nay = nay/ve1.length
-
- #Find new box thing
- tempx = []
- amtx = nax-sizeX/2
- amty = nay-sizeY/2
- tempx.append((((((mxmin - mxmax)*amtx + mxmax) - ((mymin - mymax)*amty + mymax))*.5 + ((mymin - mymax)*amty + mymax)) - center)*2 + center)
-
- amtx = nax-sizeX/2
- amty = nay+sizeY/2
- tempx.append((((((mxmin - mxmax)*amtx + mxmax) - ((mymin - mymax)*amty + mymax))*.5 + ((mymin - mymax)*amty + mymax)) - center)*2 + center)
-
- amtx = nax+sizeX/2
- amty = nay+sizeY/2
- tempx.append((((((mxmin - mxmax)*amtx + mxmax) - ((mymin - mymax)*amty + mymax))*.5 + ((mymin - mymax)*amty + mymax)) - center)*2 + center)
-
- amtx = nax+sizeX/2
- amty = nay-sizeY/2
- tempx.append((((((mxmin - mxmax)*amtx + mxmax) - ((mymin - mymax)*amty + mymax))*.5 + ((mymin - mymax)*amty + mymax)) - center)*2 + center)
-
- #Find New Location Range by looking at the sizes
- xmin = divideVectorByInt((tempx[0] + tempx[3]),2)
- xmax = divideVectorByInt((tempx[1] + tempx[2]),2)
- ymin = divideVectorByInt((tempx[0] + tempx[1]),2)
- ymax = divideVectorByInt((tempx[2] + tempx[3]),2)
-
- #Make a point
- def makePoint(x,y,z=0):
- global xmin
- global xmax
- global ymin
- global ymax
- global doodadCenter
- global tosel
- global seltopsonly
- global face
-
- amtx = x
- amty = y
- thepoint = (((((xmin - xmax)*amtx + xmax) - ((ymin - ymax)*amty + ymax))*.5 + ((ymin - ymax)*amty + ymax)) - doodadCenter)*2 + doodadCenter
- thepoint = thepoint + z*Vector(face.no)
- tver = Vert(thepoint[0],thepoint[1],thepoint[2])
- if tosel == 1 and seltopsonly == 0 and z == 0:
- tver.sel = 1
- return tver
-
- #extrude ground-plane(s)
- def extrudedoodad(vArray,heig):
- global face
- global doodadMesh
- global tosel
-
- topVArray = []
-
- doodadMesh.verts.extend(vArray)
-
- #Create array for extruded verts
- for ind in range(0,(len(vArray))):
- point = vArray[ind].co + heig*Vector(face.no)
- ver = Vert(point[0],point[1],point[2])
- if tosel == 1:
- ver.sel = 1
- topVArray.append(ver)
- doodadMesh.verts.append(topVArray[ind])
-
- #make faces around sides
- for ind in range(0,(len(vArray) - 1)):
- face = Face()
- face.v.extend([vArray[ind],vArray[ind+1],topVArray[ind+1],topVArray[ind]])
- if tosel == 1 and seltopsonly == 0: face.sel = 1
- if thereAreMats == 1:
- if reassignMats == 0 or doodSideMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodSideMat-1
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend([vArray[len(vArray) - 1],vArray[0],topVArray[0],topVArray[len(topVArray) - 1]])
- if tosel == 1 and seltopsonly == 0:
- face.sel = 1
- if thereAreMats == 1:
- if reassignMats == 0 or doodSideMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodSideMat-1
- doodadMesh.faces.append(face)
-
- return topVArray
-
- #For switching face vertices
- def fixvertindex(ind):
- if ind > 3:
- indx = ind - 4
- else:
- indx = ind
- return indx
-
- #runs doodads
- def createDoodad(indexArray,facec,minsi,maxsi,minhei,maxhei,selec,amtmin,amtmax,facpercent):
- global doodadMesh
- global seltopsonly
- global tosel
-
- doodadMesh = NMesh.GetRaw()
-
- theamt = round(randnum(amtmin,amtmax),0)
- theamt = int(theamt)
- tosel = selec
-
- for i in range(0,(theamt)):
- if randnum(0,1) <= facpercent:
- index = round(randnum(1,len(indexArray)),0)
- index = indexArray[(int(index) - 1)]
-
- Xsi = randnum(minsi,maxsi)
- Ysi = randnum(minsi,maxsi)
- hei = randnum(minhei,maxhei)
-
- #Determine orientation
- orient = int(round(randnum(0.0,3.0)))
-
- #face to use as range
- facer = Face()
- facer.v.extend([facec.v[orient],facec.v[fixvertindex(1+orient)],facec.v[fixvertindex(2+orient)],facec.v[fixvertindex(3+orient)]])
-
- if index == 1:
- singleBox(facer,Xsi,Ysi,hei)
- if index == 2:
- doubleBox(facer,Xsi,Ysi,hei)
- if index == 3:
- tripleBox(facer,Xsi,Ysi,hei)
- if index == 4:
- LShape(facer,Xsi,Ysi,hei)
- if index == 5:
- TShape(facer,Xsi,Ysi,hei)
- if index == 6:
- if randnum(0.0,1.0) > .5:
- SShape(facer,Xsi,Ysi,hei)
- else:
- ZShape(facer,Xsi,Ysi,hei)
-
- return doodadMesh
-
- def divideVectorByInt(thevect,theint):
- thevect.x = thevect.x/theint
- thevect.y = thevect.y/theint
- thevect.z = thevect.z/theint
- return thevect
-
- #Single Box Doodad
- def singleBox(facel, Xsize, Ysize, height):
- #globaling junk
- global face
- global tosel
- global doodadMesh
-
- face = Face()
- face = facel
-
- findDoodadCenter(Xsize, Ysize)
-
- vertArray = []
-
- #place four points
- vertArray.append(makePoint(0,0))
- vertArray.append(makePoint(0,1))
- vertArray.append(makePoint(1,1))
- vertArray.append(makePoint(1,0))
- topVertArray = extrudedoodad(vertArray,height)
-
- face = Face()
- face.v.extend(vertArray)
- face.v.reverse()
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend(topVertArray)
- if tosel == 1:
- face.sel = 1
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
-
- #Double Box Doodad
- def doubleBox(facel, Xsize, Ysize, height):
- #globaling junk
- global face
- global tosel
- global doodadMesh
-
- face = Face()
- face = facel
-
- findDoodadCenter(Xsize, Ysize)
-
- vertArray = []
-
- #place first box
- vertArray.append(makePoint(0,0))
- vertArray.append(makePoint(0,1))
- vertArray.append(makePoint(0.45,1))
- vertArray.append(makePoint(0.45,0))
- topVertArray = extrudedoodad(vertArray,height)
-
- face = Face()
- face.v.extend(vertArray)
- face.v.reverse()
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend(topVertArray)
- if tosel == 1:
- face.sel = 1
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
-
- vertArray = []
-
- #place second box
- vertArray.append(makePoint(0.55,0))
- vertArray.append(makePoint(0.55,1))
- vertArray.append(makePoint(1,1))
- vertArray.append(makePoint(1,0))
- topVertArray = extrudedoodad(vertArray,height)
-
- face = Face()
- face.v.extend(vertArray)
- face.v.reverse()
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend(topVertArray)
- if tosel == 1:
- face.sel = 1
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
-
- #Triple Box Doodad
- def tripleBox(facel, Xsize, Ysize, height):
- #globaling junk
- global face
- global tosel
- global doodadMesh
-
- face = Face()
- face = facel
-
- findDoodadCenter(Xsize, Ysize)
-
- vertArray = []
-
- #place first box
- vertArray.append(makePoint(0,0))
- vertArray.append(makePoint(0,1))
- vertArray.append(makePoint(0.3,1))
- vertArray.append(makePoint(0.3,0))
- topVertArray = extrudedoodad(vertArray,height)
-
- face = Face()
- face.v.extend(vertArray)
- face.v.reverse()
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend(topVertArray)
- if tosel == 1:
- face.sel = 1
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
-
- vertArray = []
-
- #place second box
- vertArray.append(makePoint(0.35,0))
- vertArray.append(makePoint(0.35,1))
- vertArray.append(makePoint(0.65,1))
- vertArray.append(makePoint(0.65,0))
- topVertArray = extrudedoodad(vertArray,height)
-
- face = Face()
- face.v.extend(vertArray)
- face.v.reverse()
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend(topVertArray)
- if tosel == 1:
- face.sel = 1
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
-
- vertArray = []
-
- #place third box
- vertArray.append(makePoint(0.7,0))
- vertArray.append(makePoint(0.7,1))
- vertArray.append(makePoint(1,1))
- vertArray.append(makePoint(1,0))
- topVertArray = extrudedoodad(vertArray,height)
-
- face = Face()
- face.v.extend(vertArray)
- face.v.reverse()
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend(topVertArray)
- if tosel == 1:
- face.sel = 1
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
-
- #The "L" Shape
- def LShape(facel, Xsize, Ysize, height):
- #globaling junk
- global face
- global tosel
- global doodadMesh
-
- face = Face()
- face = facel
-
- findDoodadCenter(Xsize, Ysize)
-
- rcon1 = randnum(0.2,0.8)
- rcon2 = randnum(0.2,0.8)
-
- vertArray = []
-
- #place L shape
- vertArray.append(makePoint(0,0))
- vertArray.append(makePoint(0,rcon1))
- vertArray.append(makePoint(0,1))
- vertArray.append(makePoint(rcon2,1))
- vertArray.append(makePoint(rcon2,rcon1))
- vertArray.append(makePoint(1,rcon1))
- vertArray.append(makePoint(1,0))
- vertArray.append(makePoint(rcon2,0))
- topVertArray = extrudedoodad(vertArray,height)
-
- #This fills in the bottom of doodad with faceness
- face = Face()
- face.v.extend([vertArray[0],vertArray[1],vertArray[4],vertArray[7]])
- face.v.reverse()
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend([vertArray[1],vertArray[2],vertArray[3],vertArray[4]])
- face.v.reverse()
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend([vertArray[4],vertArray[5],vertArray[6],vertArray[7]])
- face.v.reverse()
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
-
- #This fills in the top with faceness
- face = Face()
- face.v.extend([topVertArray[0],topVertArray[1],topVertArray[4],topVertArray[7]])
- if tosel == 1:
- face.sel = 1
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend([topVertArray[1],topVertArray[2],topVertArray[3],topVertArray[4]])
- if tosel == 1:
- face.sel = 1
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend([topVertArray[4],topVertArray[5],topVertArray[6],topVertArray[7]])
- if tosel == 1:
- face.sel = 1
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
-
- #The "T" Shape
- def TShape(facel, Xsize, Ysize, height):
- #globaling junk
- global face
- global tosel
- global doodadMesh
-
- face = Face()
- face = facel
-
- findDoodadCenter(Xsize, Ysize)
-
- rcony = randnum(0.25,0.75)
- rconx1 = randnum(0.1,0.49)
- rconx2 = randnum(0.51,0.9)
-
- vertArray = []
-
- #place T shape
- vertArray.append(makePoint(0,0))
- vertArray.append(makePoint(0,rcony))
- vertArray.append(makePoint(rconx1,rcony))
- vertArray.append(makePoint(rconx1,1))
- vertArray.append(makePoint(rconx2,1))
- vertArray.append(makePoint(rconx2,rcony))
- vertArray.append(makePoint(1,rcony))
- vertArray.append(makePoint(1,0))
- vertArray.append(makePoint(rconx2,0))
- vertArray.append(makePoint(rconx1,0))
- topVertArray = extrudedoodad(vertArray,height)
-
- #fills bottom with faceness
- face = Face()
- face.v.extend([vertArray[0],vertArray[1],vertArray[2],vertArray[9]])
- face.v.reverse()
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend([vertArray[2],vertArray[3],vertArray[4],vertArray[5]])
- face.v.reverse()
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend([vertArray[5],vertArray[6],vertArray[7],vertArray[8]])
- face.v.reverse()
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend([vertArray[8],vertArray[9],vertArray[2],vertArray[5]])
- face.v.reverse()
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
-
- #fills top with faceness
- face = Face()
- face.v.extend([topVertArray[0],topVertArray[1],topVertArray[2],topVertArray[9]])
- if tosel == 1:
- face.sel = 1
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend([topVertArray[2],topVertArray[3],topVertArray[4],topVertArray[5]])
- if tosel == 1:
- face.sel = 1
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend([topVertArray[5],topVertArray[6],topVertArray[7],topVertArray[8]])
- if tosel == 1:
- face.sel = 1
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend([topVertArray[8],topVertArray[9],topVertArray[2],topVertArray[5]])
- if tosel == 1:
- face.sel = 1
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
-
- #The "S" or "Z" Shapes
- def SShape(facel, Xsize, Ysize, height):
- #globaling junk
- global face
- global tosel
- global doodadMesh
-
- face = Face()
- face = facel
-
- findDoodadCenter(Xsize, Ysize)
-
- rcony1 = randnum(0.1,0.49)
- rcony2 = randnum(0.51,0.9)
- rconx1 = randnum(0.1,0.49)
- rconx2 = randnum(0.51,0.9)
-
- vertArray = []
-
- #place S shape
- vertArray.append(makePoint(0,0))
- vertArray.append(makePoint(0,rcony1))
- vertArray.append(makePoint(rconx1,rcony1))
- vertArray.append(makePoint(rconx1,rcony2))
- vertArray.append(makePoint(rconx1,1))
- vertArray.append(makePoint(rconx2,1))
- vertArray.append(makePoint(1,1))
- vertArray.append(makePoint(1,rcony2))
- vertArray.append(makePoint(rconx2,rcony2))
- vertArray.append(makePoint(rconx2,rcony1))
- vertArray.append(makePoint(rconx2,0))
- vertArray.append(makePoint(rconx1,0))
- topVertArray = extrudedoodad(vertArray,height)
-
- #fills bottom with faceness
- face = Face()
- face.v.extend([vertArray[0],vertArray[1],vertArray[2],vertArray[11]])
- face.v.reverse()
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend([vertArray[2],vertArray[9],vertArray[10],vertArray[11]])
- face.v.reverse()
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend([vertArray[2],vertArray[3],vertArray[8],vertArray[9]])
- face.v.reverse()
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend([vertArray[3],vertArray[4],vertArray[5],vertArray[8]])
- face.v.reverse()
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend([vertArray[5],vertArray[6],vertArray[7],vertArray[8]])
- face.v.reverse()
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
-
- #fills top with faceness
- face = Face()
- face.v.extend([topVertArray[0],topVertArray[1],topVertArray[2],topVertArray[11]])
- if tosel == 1:
- face.sel = 1
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend([topVertArray[2],topVertArray[9],topVertArray[10],topVertArray[11]])
- if tosel == 1:
- face.sel = 1
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend([topVertArray[2],topVertArray[3],topVertArray[8],topVertArray[9]])
- if tosel == 1:
- face.sel = 1
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend([topVertArray[3],topVertArray[4],topVertArray[5],topVertArray[8]])
- if tosel == 1:
- face.sel = 1
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend([topVertArray[5],topVertArray[6],topVertArray[7],topVertArray[8]])
- if tosel == 1:
- face.sel = 1
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
-
- def ZShape(facel, Xsize, Ysize, height):
- #globaling junk
- global face
- global tosel
- global doodadMesh
-
- face = Face()
- face = facel
-
- findDoodadCenter(Xsize, Ysize)
-
- rcony1 = randnum(0.1,0.49)
- rcony2 = randnum(0.51,0.9)
- rconx1 = randnum(0.1,0.49)
- rconx2 = randnum(0.51,0.9)
-
- vertArray = []
-
- #place Z shape
- vertArray.append(makePoint(0,0))
- vertArray.append(makePoint(0,rcony1))
- vertArray.append(makePoint(0,rcony2))
- vertArray.append(makePoint(rconx1,rcony2))
- vertArray.append(makePoint(rconx2,rcony2))
- vertArray.append(makePoint(rconx2,1))
- vertArray.append(makePoint(1,1))
- vertArray.append(makePoint(1,rcony2))
- vertArray.append(makePoint(1,rcony1))
- vertArray.append(makePoint(rconx2,rcony1))
- vertArray.append(makePoint(rconx1,rcony1))
- vertArray.append(makePoint(rconx1,0))
- topVertArray = extrudedoodad(vertArray,height)
-
- #fills bottom with faceness
- face = Face()
- face.v.extend([vertArray[0],vertArray[1],vertArray[10],vertArray[11]])
- face.v.reverse()
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend([vertArray[1],vertArray[2],vertArray[3],vertArray[10]])
- face.v.reverse()
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend([vertArray[3],vertArray[4],vertArray[9],vertArray[10]])
- face.v.reverse()
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend([vertArray[4],vertArray[7],vertArray[8],vertArray[9]])
- face.v.reverse()
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend([vertArray[4],vertArray[5],vertArray[6],vertArray[7]])
- face.v.reverse()
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
-
- #fills top with faceness
- face = Face()
- face.v.extend([topVertArray[0],topVertArray[1],topVertArray[10],topVertArray[11]])
- if tosel == 1:
- face.sel = 1
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend([topVertArray[1],topVertArray[2],topVertArray[3],topVertArray[10]])
- if tosel == 1:
- face.sel = 1
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend([topVertArray[3],topVertArray[4],topVertArray[9],topVertArray[10]])
- if tosel == 1:
- face.sel = 1
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend([topVertArray[4],topVertArray[7],topVertArray[8],topVertArray[9]])
- if tosel == 1:
- face.sel = 1
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
- face = Face()
- face.v.extend([topVertArray[4],topVertArray[5],topVertArray[6],topVertArray[7]])
- if tosel == 1:
- face.sel = 1
- if thereAreMats == 1:
- if reassignMats == 0 or doodTopMat == 0:
- face.materialIndex = currmat
- else:
- face.materialIndex = doodTopMat-1
- doodadMesh.faces.append(face)
-
-